#include<bits/stdc++.h>
using namespace std;
struct lo
{
    int d,v,a;
};
int check(int d,int v,vector<int> &p,int V,int m)
{
    if(v<=V) return -1;
    for(int i=0;i<m;i++)
    {
        if(p[i]<d) continue;
        return i;//need
    }
    return -1;
}
bool cmp(lo l,lo o)
{
    return l.d<o.d;
}
/*void output(vector<lo> &v)
{
    for(int i=0;i<v.size();i++)
        cout<<v[i].d<<endl;
}*/
void cinn()
{
    int n,m,L,V;
    cin>>n>>m>>L>>V;// v<=V
    vector<lo> vt(n);
    vector<int> p(m);
    for(int i=0;i<n;i++)
        //cin>>d[i]>>v[i]>>a[i];
        cin>>vt[i].d>>vt[i].v>>vt[i].a;
    sort(vt.begin(),vt.end(),cmp);
    for(int i=0;i<m;i++)
    {
        cin>>p[i];
    }
    sort(p.begin(),p.end());
    int j=0;
    int cnt=0;
    set<int> s;
    for(int i=0;i<n;i++)
    {
        if(vt[i].v>V) cnt++;
        else continue;
        if(vt[i].d>p[j])
        {
            if(j==m-1)
                break;
            j++;
            continue;
        }
        if(vt[i].v>V)
        {
            s.insert(j);
        }
    }
    cout<<cnt<<" "<<m-1<<endl;
   /* set<int> s;
    int cnt=0;
    for(int i=0;i<n;i++)
    {
        if(check(d[i],v[i],p,V,m)==-1) continue;
        s.insert(check(d[i],v[i],p,V,m));
        cnt++;
    }
    cout<<cnt<<" "<<s.size();*/
}
int main()
{
   freopen("detect.in","r",stdin);
    //freopen("detect.out","w",stdout);
    int K;cin>>K;
    for(int i=0;i<K;i++)
        cinn();

return 0;
}
